﻿#include "data_type.h"
#include <map>

extern Matrix Space;
extern Matrix Garbage;
extern vector<string> code_segment;
extern map<string, MatrixObject*> object_address_table;
extern map<string, Scalar*> scalar_address_table;
extern map<string, int> function_address_map;

void generate_bytecode(string &statement);
void convert_optr(string &str); // 연산자 앞에 \를 넣어서 처리를 편하게 해준다. 
bool precedent_match(string opt, int rank, string operator_precedent[][4]);
bool get_operator(string &str, int location, string &operator_name); // operator_name 에 \ 는 안들어간다. 
int get_rank_operator(string opt, string operator_precedent[][4]); // operator 의 순위를 얻는다.
void process_brakets(string &statement);
void optimize_braket(string &statement); // 괄호의 최적화